<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# Ce fichier est inspiré de Dotclear 2
# Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear
# Dotclear 2 est distribué selon les termes de la licence GPL
# version 2.0.
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class antispamIPLookup extends cpAntispam
{
	
	public function estIndesirable($auteur, $email, $ip, $titre, $contenu, $page_id, &$details)
	{
		
		if(!$ip || long2ip(ip2long($ip)) != $ip) {
			return;
		}

		$match = array();
		
		$bls = $this->getServers();
		$bls = preg_split('/\s*,\s*/',$bls);
		
		foreach ($bls as $bl)
		{
			if ($this->dnsblLookup($ip,$bl)) {
				$match[] = $bl;
			}
		}
		
		if (!empty($match)) {
			$details = substr(implode(', ',$match),0,128);
			return true;
		}
		
		return;

	}
	
	public function getServers()
	{
		$bls = $this->core->con->select(
			'SELECT regle_valeur FROM '.$this->core->prefix.'regles_antispam '.
			"WHERE regle_nom = 'IPLookup'"
		)->regle_valeur;
		
		return $bls;
	}
	
	private function dnsblLookup($ip,$bl)
	{
		$revIp = implode('.',array_reverse(explode('.',$ip)));
		
		$host = $revIp.'.'.$bl.'.';
		if (gethostbyname($host) != $host) {
			return true;
		}
		
		return false;
	}
	
	public static function installer($core)
	{		
		$core->site->setStatutAntispam('IPLookup', true);
		
		$cur = $core->con->openCursor($core->prefix.'regles_antispam');
		
		$rs = $core->con->select(
			'SELECT MAX(regle_id) '.
			'FROM '.$core->prefix.'regles_antispam'
		);
		
		$cur->regle_id = (integer) $rs->f(0)+1;
		$cur->regle_nom = 'IPLookup';
		$cur->regle_valeur = 'sbl-xbl.spamhaus.org , bsb.spamlookup.net';
		$cur->insert();
		
	}

	public function moduleAdmin() {
		return 'antispamIPLookup';
	}
	
}

?>